/**
 * 用户喜欢API封装
 */

// 导入云对象
const sandart = uniCloud.importObject('sandart')

export default {
	/**
	 * 获取用户喜欢的图案列表
	 * @param {object} params - 查询参数 (可选)
	 * @param {number} [params.page=1] - 页码
	 * @param {number} [params.limit=20] - 每页数量
	 * @returns {Promise<object>} 返回喜欢的图案列表
	 */
	async getUserFavourites(params = {}) {
		try {
			const result = await sandart.getUserFavourites(params)
			return result
		} catch (error) {
			console.error('[FAVOURITE API] getUserFavourites error:', error)
			throw error
		}
	},
	
	/**
	 * 添加图案到喜欢列表
	 * @param {object} params - 添加参数 (必填)
	 * @param {string} params.pattern_id - 图案ID (必填)
	 * @returns {Promise<object>} 返回添加结果
	 */
	async addPatternToFavourites(params) {
		try {
			const result = await sandart.addPatternToFavourites(params)
			return result
		} catch (error) {
			console.error('[FAVOURITE API] addPatternToFavourites error:', error)
			throw error
		}
	},
	
	/**
	 * 从喜欢列表移除图案
	 * @param {object} params - 移除参数 (必填)
	 * @param {string} params.pattern_id - 图案ID (必填)
	 * @returns {Promise<object>} 返回移除结果
	 */
	async removePatternFromFavourites(params) {
		try {
			const result = await sandart.removePatternFromFavourites(params)
			return result
		} catch (error) {
			console.error('[FAVOURITE API] removePatternFromFavourites error:', error)
			throw error
		}
	},
	
	/**
	 * 检查图案是否在用户喜欢列表中
	 * @param {object} params - 检查参数 (必填)
	 * @param {string} params.pattern_id - 图案ID (必填)
	 * @returns {Promise<object>} 返回检查结果，包含 is_favourite 字段
	 */
	async checkPatternInFavourites(params) {
		try {
			const result = await sandart.checkPatternInFavourites(params)
			return result
		} catch (error) {
			console.error('[FAVOURITE API] checkPatternInFavourites error:', error)
			throw error
		}
	},
	
	/**
	 * 清空用户喜欢列表
	 * @returns {Promise<object>} 返回清空结果
	 */
	async clearUserFavourites() {
		try {
			const result = await sandart.clearUserFavourites()
			return result
		} catch (error) {
			console.error('[FAVOURITE API] clearUserFavourites error:', error)
			throw error
		}
	},
	
	/**
	 * 切换图案的喜欢状态（便捷方法）
	 * @param {object} params - 切换参数 (必填)
	 * @param {string} params.pattern_id - 图案ID (必填)
	 * @returns {Promise<object>} 返回切换结果，包含 is_favourite 字段表示切换后的状态
	 */
	async togglePatternFavourite(params) {
		try {
			// 先检查当前状态
			const checkResult = await this.checkPatternInFavourites(params)
			const isFavourite = checkResult.data.is_favourite
			
			if (isFavourite) {
				// 如果已喜欢，则移除
				const result = await this.removePatternFromFavourites(params)
				return {
					...result,
					data: {
						...result.data,
						is_favourite: false,
						action: 'removed'
					}
				}
			} else {
				// 如果未喜欢，则添加
				const result = await this.addPatternToFavourites(params)
				return {
					...result,
					data: {
						...result.data,
						is_favourite: true,
						action: 'added'
					}
				}
			}
		} catch (error) {
			console.error('[FAVOURITE API] togglePatternFavourite error:', error)
			throw error
		}
	}
}
